package com.yunxin.customui.service.dbservice;

import com.yunxin.customui.bean.PageConfig;
import com.yunxin.customui.bean.UIComponentConfig;
import com.yunxin.customui.bean.card.CardConfig;
import com.yunxin.customui.bean.echart.ChartCfgBean;
import com.yunxin.customui.bean.echart.ChartSqlConfig;
import com.yunxin.customui.bean.table.TableConfig;
import com.yunxin.customui.bean.table.datatable.TableBusinessConfig;
import com.yunxin.customui.bean.table.sqltable.TableSqlColumn;
import com.yunxin.customui.bean.table.sqltable.TableSqlConfig;
import com.yunxin.customui.bean.menu.MenuBean;
import com.yunxin.customui.mapper.ConfigMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 配置服务
 * 方法待完善
 * @author lee
 * @date 2021/10/01
 */
@Service
public class ConfigService {

    @Resource
    ConfigMapper configMapper;

    /**
     * 查询通过id卡配置
     *
     * @param cardId 卡id
     * @return {@link CardConfig}
     */
    public CardConfig queryCardConfigById(Integer cardId){
        return configMapper.queryCardConfigById(cardId);
    }

    /**
     * 表的sql查询配置id
     *
     * @param tableId 表id
     * @return {@link TableSqlConfig}
     */
    public TableSqlConfig queryTableSqlConfigById(Integer tableId){

        return configMapper.queryTableSqlConfigById(tableId);
    }

    /**
     * 查询表的配置id
     *
     * @param tableId 表id
     * @return {@link TableConfig}
     */
    public TableConfig queryTableConfigById(Integer tableId){
        if (tableId%10 == 1){
            return configMapper.queryTableSqlConfigById(tableId);
        }else if (tableId%10 == 2){
            return configMapper.queryTableBusinessConfigById(tableId);
        }
        return configMapper.queryTableSqlConfigById(tableId);
    }

    /**
     * 查询表业务配置id
     *
     * @param tableId 表id
     * @return {@link TableBusinessConfig}
     */
    public TableBusinessConfig queryTableBusinessConfigById(Integer tableId){
        return configMapper.queryTableBusinessConfigById((tableId));
    }

    /**
     * 查询表sql列id
     *
     * @param tableId 表id
     * @return {@link List<TableSqlColumn>}
     */
    public List<TableSqlColumn> queryTableSqlColumnById(Integer tableId){
        return configMapper.queryTableSqlColumnById(tableId);
    }

    /**
     * 查询图配置id
     *
     * @param chartId 表id
     * @return {@link ChartCfgBean}
     */
    public ChartSqlConfig queryChartConfigById(Integer chartId){
        return configMapper.queryChartConfigById(chartId);
    }

    /**
     * 查询页面配置id
     *
     * @param pageId 页面id
     * @return {@link PageConfig}
     */
    public PageConfig queryPageConfigById(Integer pageId){
        return configMapper.queryPageConfigById(pageId);
    }


    public List<MenuBean> queryMenuById(Integer pageId){
        return configMapper.queryMenuById(pageId);
    }

    public UIComponentConfig queryComponentConfigById(Integer componentId){
        int type =  componentId%10;
        switch (type){
            case 0:
                return queryTableBusinessConfigById(componentId);
            case 1:
                return queryTableSqlConfigById(componentId);
            case 2 :
                return queryCardConfigById(componentId);
            case 3 :
                return queryChartConfigById(componentId);
        }
        return null;
    }

}
